Linux 的Oom-Kill 机制和 Clean机制

Posted by Jackson on 2017-08-10

Linux的oom-kill和clean机制


oom-killer机制: 大数据相关进程是非常消耗内存的,在Linux内核检测到系统内存不足后,会触发oom-kill,挑选占用最大内存的进程杀掉。
如果我们的进程突然断了,首先查看日志找EROOR,有ERROR具体分析产生的原因,没有ERROR但是INFO信息中断,很可能就是触发了oom-killer机制。
解决方案:
使用free -h命令查看内存使用情况,
再使用cat /var/log/messages | grep oom命令查看有没有类似于Killed process 的命令,如果有,就是触发了oom-killer机制


clean机制: Linux的/tmp目录是一个临时目录,它有一个机制,默认清理超过30天的内容,而前面使用jps命令的时候就发现,hadoop的进程pid都存放在/tmp目录中,
启动进程的时候去/tmp目录下创建对应的pid文件,结束进程的时候去/tmp目录下找到程序对应的pid用来结束进程并删除pid文件。
那么如果我们的hadoop组件进程启动时间超过了30天了呢?pid文件被清理,结束命令找不到pid号,会再重新创建一个pid,结果就是pid号紊乱,进程无法正常结束。

解决方案:
在家目录下面创建一个tmp目录,然后把hdfs和yarn的pid号管理文件夹设置成家目录下的tmp目录即可。

注意:更改pid文件所在的目录时候,需要先停止HDFS,修改完成后再重启HDFS生效,否则容易出现问题。